#include <iostream>

using namespace std;

//继承同名成员处理方式
//1、访问子类同名成员   直接访问即可
//2、访问父类同名成员   需要加作用域
class Base {
public:
    int a;

    Base() {
        a = 100;
    }
    void func(){
        cout<<"Base:func()的调用"<<endl;
    }
    void func(int num){
        cout<<"Base:func(int)的调用"<<endl;
    }
};

class Son: public Base{
public:
    int a;

    Son() {
        a = 200;
    }
    void func(){
        cout<<"Son:func()的调用"<<endl;
    }
};

void test1() {
    Son son;
    cout << "Son:a=" << son.a << endl;
    cout << "Base:a=" << son.Base::a << endl;//如果子类想访问父类中的同名成员变量，需要加父类的作用域
}
void test2(){
    Son son;
    //当子类与父类拥有同名的成员函数，子类会隐藏父类中同名成员函数，加作用域可以访问到父类中同名函数
    son.func();//直接调用 调用的是子类中的同名成员函数
    son.Base::func();//如果子类想访问父类中被隐藏的同名成员函数，需要加父类的作用域
    //son.func(10);
    son.Base::func(10);
}
int main() {
    test1();
    test2();
    return 0;
}